import BASE_URL from './env.js' //引入接口共用地址 

const request = (options) => {

	return new Promise((resolve, reject) => {

		// 获取用户令牌
		let token = 'Bearer ' + uni.getStorageSync('_token');

		const baseUrl = '/api'; // 这里的 '/api' 对应的是我们在代理配置中的路径

		let url = BASE_URL + options.url; // 在微信开发者工具中使用
		// let url = options.url;  // 在浏览器调试时启用

		// 接口地址是否为 外部请求接口地址
		if (options.isSpecialApi) {
			url = options.url;
		}

		// 设置请求头
		const header = {
			"Content-Type": "application/json",
			"Authorization": `${token}`,
			...options.header // 可以传入额外的请求头参数
		}
		// ⭐在发送请求之前执行拦截操作
		uni.request({
			url, //接收请求的API
			method: options.method || 'GET', //接收请求的方式,如果不传默认为GET
			data: options.data || {}, //接收请求的data,不传默认为空
			header: header, //接收请求的header
			success(res) {
				// ⭐在这里处理接收到响应后处理响应数据
				let code = res.data.code;
				// debugger
				if (code !== 200) {
					if (code !== 401) {
						uni.showToast({
							title: res.data.detail,
							icon: 'error'
						});
					}
				}

				switch (code) {
					case 401:
						// 提示重新登录
						uni.showModal({
							title: '提示',
							content: '请登录后操作',
							success: function (res) {
								if (res.confirm) {
									uni.navigateTo({
										url: `/pages/login/index`
									});
								}
							}
						});
						break;
					default:
						break;
				}
				resolve(res.data) // 使用resolve将数据传递出去
			},
			fail: (err) => {
				reject(err)
			}
		})
	})
}

export default request;